{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "730faf22-b80f-454f-ae38-3c9b0066caef",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Warning: f1 was already in a rankset, deleted from cluster ACLSTM\n",
      "Warning: f2 was already in a rankset, deleted from cluster ACLSTM\n",
      "Warning: f3 was already in a rankset, deleted from cluster ACLSTM\n",
      "Warning: f4 was already in a rankset, deleted from cluster ACLSTM\n",
      "Warning: removing empty cluster\n"
     ]
    }
   ],
   "source": [
    "from graphviz import Digraph\n",
    "\n",
    "def draw_aclstm():\n",
    "    dot = Digraph(name=\"ACLSTM\", format='png', \n",
    "                  graph_attr={'rankdir': 'TB', 'bgcolor': 'white', 'splines': 'ortho'},\n",
    "                  node_attr={'shape': 'box3d', 'style': 'filled', 'fontname': 'Helvetica'})\n",
    "    \n",
    "    # ================= 颜色方案 =================\n",
    "    input_color = '#FFB3BA'    # 淡粉红\n",
    "    lstm_color = '#BAE1FF'     # 淡蓝\n",
    "    reverse_lstm_color = '#FFDFBA' # 淡橙\n",
    "    attention_color = '#BAFFC9' # 淡绿\n",
    "    output_color = '#FFFFBA'   # 淡黄\n",
    "    \n",
    "    # ================= 输入层 =================\n",
    "    with dot.subgraph(name='cluster_input') as c:\n",
    "        c.attr(color='transparent', label='Input Sequence')\n",
    "        for i in range(1, 5):\n",
    "            c.node(f'x{i}', f'x{i}', fillcolor=input_color, height='0.8', width='1.2')\n",
    "    \n",
    "    # ================= 前向LSTM层 =================\n",
    "    with dot.subgraph(name='cluster_forward') as c:\n",
    "        c.attr(color='transparent', label='Forward LSTM')\n",
    "        for t in range(1, 5):\n",
    "            c.node(f'f{t}', f'h_t^{{f}}', fillcolor=lstm_color, width='1.5')\n",
    "    \n",
    "    # ================= 反向LSTM层 =================\n",
    "    with dot.subgraph(name='cluster_backward') as c:\n",
    "        c.attr(color='transparent', label='Backward LSTM')\n",
    "        for t in range(1, 5):\n",
    "            c.node(f'b{t}', f'h_t^{{b}}', fillcolor=reverse_lstm_color, width='1.5')\n",
    "    \n",
    "    # ================= Attention层 =================\n",
    "    with dot.subgraph(name='cluster_attention') as c:\n",
    "        c.attr(color='transparent', label='Attention')\n",
    "        c.node('attn', 'Attention\\nMechanism', shape='ellipse', fillcolor=attention_color)\n",
    "    \n",
    "    # ================= 输出层 =================\n",
    "    with dot.subgraph(name='cluster_output') as c:\n",
    "        c.attr(color='transparent')\n",
    "        c.node('softmax', 'Softmax', shape='oval', fillcolor=output_color)\n",
    "    \n",
    "    # ================= 连接定义 =================\n",
    "    # 输入->LSTM连接（浅灰色虚线）\n",
    "    dot.attr('edge', style='dashed', color='gray60')\n",
    "    for i in range(1, 5):\n",
    "        dot.edge(f'x{i}', f'f{i}')\n",
    "        dot.edge(f'x{i}', f'b{i}')\n",
    "    \n",
    "    # LSTM时序连接（带箭头渐变）\n",
    "    for i in range(1, 4):\n",
    "        dot.edge(f'f{i}', f'f{i+1}', color='#004D80', penwidth='1.5',\n",
    "                arrowhead='vee', arrowsize='0.8')\n",
    "        dot.edge(f'b{i+1}', f'b{i}', color='#CC5500', penwidth='1.5',  # 反向连接\n",
    "                arrowhead='vee', arrowsize='0.8')\n",
    "    \n",
    "    # Attention连接（绿色系）\n",
    "    dot.attr('edge', color='#228B22', style='tapered', penwidth='2')\n",
    "    for t in range(1, 5):\n",
    "        dot.edge(f'f{t}', 'attn', dir='both')\n",
    "        dot.edge(f'b{t}', 'attn', dir='both')\n",
    "    \n",
    "    # 输出连接（黄金色）\n",
    "    dot.attr('edge', color='#DAA520', arrowhead='normal', arrowsize='1.2')\n",
    "    dot.edge('attn', 'softmax')\n",
    "    \n",
    "    # ================= 时间步标注 =================\n",
    "    with dot.subgraph() as c:\n",
    "        c.attr(rank='same')\n",
    "        for t in range(1, 5):\n",
    "            c.node(f't{t}', f't={t}', shape='plaintext', width='0.5')\n",
    "            c.edge(f't{t}', f'f{t}', style='invis')\n",
    "    \n",
    "    dot.render('aclstm', view=True, cleanup=True)\n",
    "\n",
    "draw_aclstm()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "edcab6bc-b59f-45ab-9052-cd15fefbce46",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "(process:9152): Pango-WARNING **: 10:19:51.865: couldn't load font \"Helvetica Neue Not-Rotated 14\", falling back to \"Sans Not-Rotated 14\", expect ugly output.\n",
      "Warning: Orthogonal edges do not currently handle edge labels. Try using xlabels.\n"
     ]
    }
   ],
   "source": [
    "from graphviz import Digraph\n",
    "\n",
    "def draw_conv_lstm():\n",
    "    dot = Digraph(name=\"ConvLSTM\", format='png',\n",
    "                  graph_attr={'rankdir': 'LR', \n",
    "                             'bgcolor': 'white',  # 浅灰背景\n",
    "                             'splines': 'ortho',\n",
    "                             'nodesep': '0.35',\n",
    "                             'ranksep': '0.8'},\n",
    "                  node_attr={'fontname': 'Helvetica Neue',\n",
    "                            'penwidth': '1.2'})\n",
    "    \n",
    "    # ============== 专业配色方案 ==============\n",
    "    input_color = '#4A90E2'     # 科技蓝\n",
    "    weight_color = '#E74C3C'    # 警示红（W_peep）\n",
    "    bn_color = '#E67E22'        # 琥珀橙\n",
    "    gate_color = '#2ECC71'      # 翡翠绿\n",
    "    state_color = '#9B59B6'     # 晶紫色\n",
    "    output_color = '#34495E'    # 深灰蓝\n",
    "    \n",
    "    # ============== 输入状态模块 ==============\n",
    "    with dot.subgraph(name='cluster_input') as c:\n",
    "        c.attr(color='transparent', label='Input States')\n",
    "        c.node('c_prev', label='c^{(t-1)}', shape='cylinder', fillcolor=state_color, style='filled')\n",
    "        c.node('h_prev', label='h^{(t-1)}', shape='box3d', fillcolor=state_color, style='filled')\n",
    "        c.node('x_t', label='x^{(t)}', shape='box3d', fillcolor=input_color, style='filled')\n",
    "    \n",
    "    # ============== 参数处理模块 ==============\n",
    "    with dot.subgraph(name='cluster_params') as c:\n",
    "        c.attr(color='transparent', label='Parameters')\n",
    "        c.node('Wx', label='W_x', shape='note', fillcolor='white', style='filled,rounded')\n",
    "        c.node('Wh', label='W_h', shape='note', fillcolor='white', style='filled,rounded')\n",
    "        c.node('Wp', label='W_{peep}', shape='note', fillcolor=weight_color, style='filled,rounded')\n",
    "        \n",
    "    # ============== BN处理模块 ==============\n",
    "    with dot.subgraph(name='cluster_bn') as c:\n",
    "        c.attr(color='transparent', label='BatchNorm')\n",
    "        c.node('bn1', label='BN', shape='component', fillcolor=bn_color, style='filled')\n",
    "        c.node('bn2', label='BN', shape='component', fillcolor=bn_color, style='filled')\n",
    "        \n",
    "    # ============== 门控运算模块 ==============\n",
    "    with dot.subgraph(name='cluster_gates') as c:\n",
    "        c.attr(color='transparent', label='Gates')\n",
    "        # 遗忘门\n",
    "        c.node('forget', label='σ_f', shape='ellipse', fillcolor=gate_color, style='filled')\n",
    "        # 输入门\n",
    "        c.node('input', label='σ_i', shape='ellipse', fillcolor=gate_color, style='filled')\n",
    "        # 候选值\n",
    "        c.node('c_tilde', label='tanh', shape='ellipse', fillcolor=gate_color, style='filled')\n",
    "        # 输出门\n",
    "        c.node('output', label='σ_o', shape='ellipse', fillcolor=gate_color, style='filled')\n",
    "    \n",
    "    # ============== 状态更新模块 ==============\n",
    "    with dot.subgraph(name='cluster_update') as c:\n",
    "        c.attr(color='transparent', label='State Update')\n",
    "        c.node('mult1', label='⊗', shape='circle', fillcolor=output_color, style='filled')\n",
    "        c.node('mult2', label='⊗', shape='circle', fillcolor=output_color, style='filled')\n",
    "        c.node('add', label='⊕', shape='circle', fillcolor=output_color, style='filled')\n",
    "        c.node('c_t', label='c^{(t)}', shape='cylinder', fillcolor=state_color, style='filled')\n",
    "        c.node('h_t', label='h^{(t)}', shape='box3d', fillcolor=state_color, style='filled')\n",
    "    \n",
    "    # ============== 连接关系 ==============\n",
    "    # 输入到参数处理\n",
    "    dot.edge('x_t', 'Wx', color=input_color, style='tapered', penwidth='2')\n",
    "    dot.edge('h_prev', 'Wh', color=state_color, style='tapered', penwidth='2')\n",
    "    \n",
    "    # BN处理流\n",
    "    dot.edge('Wx', 'bn1', color=bn_color, arrowhead='none')\n",
    "    dot.edge('Wh', 'bn1', color=bn_color, arrowhead='none')\n",
    "    dot.edge('bn1', 'forget', color=gate_color)\n",
    "    dot.edge('bn1', 'input', color=gate_color)\n",
    "    dot.edge('bn1', 'c_tilde', color=gate_color)\n",
    "    \n",
    "    # Peephole连接\n",
    "    dot.edge('c_prev', 'Wp', color=weight_color, style='dashed')\n",
    "    dot.edge('Wp', 'forget', color=weight_color, style='dashed')\n",
    "    dot.edge('Wp', 'input', color=weight_color, style='dashed')\n",
    "    \n",
    "    # 门控运算流\n",
    "    dot.edge('forget', 'mult1', label='f^{(t)}', fontcolor=gate_color)\n",
    "    dot.edge('c_prev', 'mult1', color=state_color)\n",
    "    dot.edge('input', 'mult2', label='i^{(t)}', fontcolor=gate_color)\n",
    "    dot.edge('c_tilde', 'mult2', color=gate_color)\n",
    "    dot.edge('mult1', 'add', color=output_color)\n",
    "    dot.edge('mult2', 'add', color=output_color)\n",
    "    \n",
    "    # 状态输出\n",
    "    dot.edge('add', 'c_t', color=state_color, penwidth='2.5')\n",
    "    dot.edge('c_t', 'h_t', color=state_color, penwidth='2.5')\n",
    "    \n",
    "    # ============== 装饰元素 ==============\n",
    "    with dot.subgraph(name='cluster_deco') as c:\n",
    "        c.attr(color='transparent')\n",
    "\n",
    "    # 布局约束\n",
    "    dot.render('conv_lstm', view=True, cleanup=True)\n",
    "\n",
    "draw_conv_lstm()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "a6185bae-0858-4f5f-8c4b-f03f504ac4ab",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "(process:2872): Pango-WARNING **: 16:32:19.004: couldn't load font \"Arial Unicode MS Not-Rotated 14\", falling back to \"Sans Not-Rotated 14\", expect ugly output.\n",
      "Warning: Orthogonal edges do not currently handle edge labels. Try using xlabels.\n"
     ]
    }
   ],
   "source": [
    "from graphviz import Digraph\n",
    "\n",
    "def draw_sennoside_flow():\n",
    "    dot = Digraph(name=\"SennosidePreprocess\", format='png',\n",
    "                  graph_attr={'rankdir': 'TB', \n",
    "                             'bgcolor': 'white',\n",
    "                             'splines': 'ortho',\n",
    "                             'nodesep': '0.5',\n",
    "                             'ranksep': '1.0'},\n",
    "                  node_attr={'fontname': 'Arial Unicode MS',\n",
    "                            'penwidth': '1.5'})\n",
    "    \n",
    "    # ============== 配色方案 ==============\n",
    "    input_color = '#4A90E2'     # 科技蓝（输入）\n",
    "    clean_color = '#E67E22'     # 琥珀橙（清洗）\n",
    "    denoise_color = '#2ECC71'   # 翡翠绿（降噪）\n",
    "    reduce_color = '#F1C40F'    # 香槟金（降维）\n",
    "    split_color = '#9B59B6'     # 晶紫色（划分）\n",
    "    output_color = '#34495E'    # 深灰蓝（输出）\n",
    "\n",
    "    # ============== 输入模块 ==============\n",
    "    with dot.subgraph(name='cluster_input') as c:\n",
    "        c.attr(color='transparent')\n",
    "        c.node('raw_data', label='原始数据集', \n",
    "              shape='folder', \n",
    "              fillcolor=input_color,\n",
    "              style='filled,rounded')\n",
    "\n",
    "    # ============== 数据清洗 ==============\n",
    "    with dot.subgraph(name='cluster_clean') as c:\n",
    "        c.attr(color='transparent')\n",
    "        c.node('outlier_removal', label='异常值剔除', \n",
    "              shape='box3d',\n",
    "              fillcolor=clean_color,\n",
    "              style='filled')\n",
    "        \n",
    "        c.node('qc_check0', label='质量检查',\n",
    "              shape='diamond',\n",
    "              fillcolor='#FFC107',\n",
    "              style='filled')\n",
    "\n",
    "    # ============== 降噪处理 ==============\n",
    "    with dot.subgraph(name='cluster_denoise') as c:\n",
    "        c.attr(color='transparent')\n",
    "        c.node('baseline', label='基线校正', \n",
    "              shape='box3d',\n",
    "              fillcolor=denoise_color,\n",
    "              style='filled')\n",
    "        \n",
    "        c.node('sg_filter', label='Savitzky-Golay滤波', \n",
    "              shape='box3d',\n",
    "              fillcolor=denoise_color,\n",
    "              style='filled')\n",
    "        \n",
    "        c.node('snv_norm', label='SNV归一化)', \n",
    "              shape='box3d',\n",
    "              fillcolor=denoise_color,\n",
    "              style='filled')\n",
    "\n",
    "    # ============== 数据降维 ==============\n",
    "    with dot.subgraph(name='cluster_reduce') as c:\n",
    "        c.attr(color='transparent')\n",
    "        c.node('pca_dim', label='主成分分析', \n",
    "              shape='box3d',\n",
    "              fillcolor=reduce_color,\n",
    "              style='filled')\n",
    "        \n",
    "        c.node('pc_selection', label='特征选择', \n",
    "              shape='note',\n",
    "              fillcolor=reduce_color,\n",
    "              style='filled,dotted')\n",
    "\n",
    "    # ============== 输出模块 ==============\n",
    "    with dot.subgraph(name='cluster_output') as c:\n",
    "        c.attr(color='transparent')\n",
    "        c.node('final_data', label='预处理后数据', \n",
    "              shape='cylinder',\n",
    "              fillcolor=output_color,\n",
    "              style='filled')\n",
    "\n",
    "    # ============== 连接关系构建 ==============\n",
    "    dot.edge('raw_data', 'outlier_removal', \n",
    "            color=input_color, arrowsize='0.8', penwidth='2')\n",
    "    \n",
    "    dot.edge('outlier_removal', 'qc_check0', \n",
    "            color=clean_color, arrowsize='0.8', penwidth='2')\n",
    "    \n",
    "    # ===== 修正后的虚线反馈回路 =====\n",
    "    dot.edge('qc_check0', 'baseline', \n",
    "            color='#666666', style='dashed', arrowhead='normal',\n",
    "            label='合格样本', fontcolor='#27AE60', fontname='Arial Unicode MS')\n",
    "    \n",
    "    dot.edge('qc_check0', 'outlier_removal', \n",
    "            color='#666666', style='dashed', arrowhead='normal',\n",
    "            label='复处理', fontcolor='#E74C3C', constraint='false',\n",
    "            tailport='s', headport='e', dir='back', fontname='Arial Unicode MS')  # 显式端口控制\n",
    "    \n",
    "    dot.edge('baseline', 'sg_filter', \n",
    "            color=denoise_color, arrowsize='0.8', penwidth='2')\n",
    "    \n",
    "    dot.edge('sg_filter', 'snv_norm', \n",
    "            color=denoise_color, arrowsize='0.8', penwidth='2')\n",
    "    \n",
    "    dot.edge('snv_norm', 'pca_dim', \n",
    "            color=denoise_color, arrowsize='0.8', penwidth='2')\n",
    "    \n",
    "    dot.edge('pca_dim', 'pc_selection', \n",
    "            color=reduce_color, arrowsize='0.8', penwidth='2')\n",
    "    \n",
    "    dot.edge('pc_selection', 'final_data', \n",
    "            color=reduce_color, arrowsize='0.8', penwidth='2')\n",
    "\n",
    "    dot.render('sennoside_preprocess_v2', view=True, cleanup=True)\n",
    "\n",
    "draw_sennoside_flow()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "2e5c202c-75bb-4992-9ebd-1bca80c03419",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "(process:11308): Pango-WARNING **: 11:07:42.866: couldn't load font \"Arial Unicode MS Not-Rotated 10\", falling back to \"Sans Not-Rotated 10\", expect ugly output.\n"
     ]
    }
   ],
   "source": [
    "from graphviz import Digraph\n",
    "\n",
    "def draw_lstm():\n",
    "    dot = Digraph(name=\"LSTM_Cell\", format='png',\n",
    "                  graph_attr={'rankdir': 'LR', \n",
    "                             'bgcolor': 'white', \n",
    "                             'size': '8,5',         # 横版长方形比例\n",
    "                             'splines': 'ortho',\n",
    "                             'nodesep': '0.3'},\n",
    "                  node_attr={'fontname': 'Arial Bold',\n",
    "                            'fontsize': '10'})\n",
    "    \n",
    "    # ============== 颜色方案 ==============\n",
    "    input_color = '#4FC3F7'     # 输入蓝色\n",
    "    state_color = '#FFF176'     # 状态黄色\n",
    "    gate_color = '#AED581'      # 门控浅绿\n",
    "    op_color = '#F06292'        # 运算粉色\n",
    "    flow_color = '#78909C'      # 数据流灰色\n",
    "\n",
    "    # ============== 输入输出节点 ==============\n",
    "    with dot.subgraph(name='cluster_io') as c:\n",
    "        c.attr(color='transparent')\n",
    "        c.node('X_t', label='Xₜ', shape='circle', \n",
    "              style='filled', fillcolor=input_color, fontname='Arial Unicode MS')\n",
    "        c.node('h_prev', label='hₜ₋₁', shape='cylinder',\n",
    "              style='filled', fillcolor=state_color, fontname='Arial Unicode MS')\n",
    "        c.node('C_prev', label='Cₜ₋₁', shape='cylinder', \n",
    "              style='filled', fillcolor=state_color, fontname='Arial Unicode MS')\n",
    "        c.node('h_t', label='hₜ', shape='cylinder', \n",
    "              style='filled', fillcolor=state_color, fontname='Arial Unicode MS')\n",
    "        c.node('C_t', label='Cₜ', shape='cylinder',\n",
    "              style='filled', fillcolor=state_color, fontname='Arial Unicode MS')\n",
    "\n",
    "    # ============== 核心处理模块 ==============\n",
    "    with dot.subgraph(name='cluster_core') as c:\n",
    "        c.attr(style='filled', color='#E8F5E9', label='')\n",
    "        # 遗忘门\n",
    "        c.node('forget', label='σ\\nForget Gate', \n",
    "              shape='box', style='filled', fillcolor=gate_color)\n",
    "        # 输入门\n",
    "        c.node('input_gate', label='σ\\nInput Gate', \n",
    "              shape='box', style='filled', fillcolor=gate_color)\n",
    "        c.node('cell_input', label='tanh\\nNew Memory', \n",
    "              shape='box', style='filled', fillcolor=gate_color)\n",
    "        # 输出门 \n",
    "        c.node('output_gate', label='σ\\nOutput Gate',\n",
    "              shape='box', style='filled', fillcolor=gate_color)\n",
    "        # 运算节点\n",
    "        c.node('mult1', label='×', shape='circle',\n",
    "              style='filled', fillcolor=op_color)\n",
    "        c.node('mult2', label='×', shape='circle',\n",
    "              style='filled', fillcolor=op_color)\n",
    "        c.node('plus', label='+', shape='circle',\n",
    "              style='filled', fillcolor=op_color)\n",
    "        c.node('mult3', label='×', shape='circle', \n",
    "              style='filled', fillcolor=op_color)\n",
    "        c.node('tanh', label='tanh', shape='oval',\n",
    "              style='filled', fillcolor=op_color)\n",
    "\n",
    "    # ============== 连接关系 ==============\n",
    "    # 输入连接\n",
    "    dot.edges([('X_t', 'forget'), ('X_t', 'input_gate'),\n",
    "              ('X_t', 'cell_input'), ('X_t', 'output_gate')])\n",
    "    \n",
    "    # 状态循环\n",
    "    dot.edge('h_prev', 'forget', label='', color=flow_color)\n",
    "    dot.edge('h_prev', 'input_gate', color=flow_color)\n",
    "    dot.edge('h_prev', 'cell_input', color=flow_color)\n",
    "    dot.edge('h_prev', 'output_gate', color=flow_color)\n",
    "    \n",
    "    # 遗忘门流程\n",
    "    dot.edge('C_prev', 'mult1', color=state_color)\n",
    "    dot.edge('forget', 'mult1', color=gate_color)\n",
    "    dot.edge('mult1', 'plus', color=op_color)\n",
    "    \n",
    "    # 新记忆生成\n",
    "    dot.edge('input_gate', 'mult2', color=gate_color)\n",
    "    dot.edge('cell_input', 'mult2', color=gate_color)\n",
    "    dot.edge('mult2', 'plus', color=op_color)\n",
    "    \n",
    "    # 状态更新\n",
    "    dot.edge('plus', 'C_t', color=state_color)\n",
    "    dot.edge('C_t', 'tanh', color=state_color)\n",
    "    \n",
    "    # 输出生成\n",
    "    dot.edge('tanh', 'mult3', color=op_color)\n",
    "    dot.edge('output_gate', 'mult3', color=gate_color)\n",
    "    dot.edge('mult3', 'h_t', color=state_color)\n",
    "    \n",
    "    # 状态传递\n",
    "    dot.edge('C_t', 'C_prev', style='dashed', color=state_color)\n",
    "    dot.edge('h_t', 'h_prev', style='dashed', color=state_color)\n",
    "\n",
    "    # ============== 布局优化 ==============\n",
    "\n",
    "    with dot.subgraph(name='cluster_flow') as cluster_flow:\n",
    "        cluster_flow.attr(rank='same')\n",
    "        for node in ['X_t', 'h_prev', 'C_prev']:\n",
    "            cluster_flow.node(node)  # 使用.node()逐个声明已存在的节点\n",
    "\n",
    "    with dot.subgraph(name='cluster_output') as cluster_output:\n",
    "        cluster_output.attr(rank='same')\n",
    "        for node in ['h_t', 'C_t']:\n",
    "            cluster_output.node(node)\n",
    "\n",
    "    dot.render('lstm_optimized', view=True, cleanup=True)\n",
    "\n",
    "draw_lstm()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "76e40179-d36d-404b-877d-2ea5d573a610",
   "metadata": {},
   "outputs": [],
   "source": [
    "from graphviz import Digraph\n",
    "import matplotlib.font_manager as fm\n",
    "\n",
    "def draw_preprocessing_flow():\n",
    "    # 设置中文字体（确保系统已安装SimSun或SimHei）\n",
    "    font_path = fm.findfont(fm.FontProperties(family='SimSun'))\n",
    "    \n",
    "    # 创建纵向流程图（使用dot引擎保证层级布局）\n",
    "    dot = Digraph(\n",
    "        name=\"Data_Preprocessing_Flow\",\n",
    "        format='png',\n",
    "        engine='dot',  # 强制使用层级布局引擎\n",
    "        graph_attr={\n",
    "            'rankdir': 'TB',\n",
    "            'bgcolor': 'white',\n",
    "            'size': '8,10',\n",
    "            'nodesep': '0.4',\n",
    "            'ranksep': '0.6',\n",
    "            'fontname': 'SimSun',\n",
    "            'splines': 'ortho'  # 直角连线\n",
    "        },\n",
    "        node_attr={\n",
    "            'fontname': 'SimSun',\n",
    "            'fontsize': '11',\n",
    "            'shape': 'box',\n",
    "            'style': 'rounded',\n",
    "            'color': '#333333',\n",
    "            'penwidth': '1.2'\n",
    "        }\n",
    "    )\n",
    "\n",
    "    # ============== 节点定义 ==============\n",
    "    # 输入节点（论文3.1节）\n",
    "    dot.node('RawData', '原始数据\\n403条近红外光谱', \n",
    "             shape='cylinder', color='#666666')\n",
    "    \n",
    "    # 数据清洗模块（论文3.2节）\n",
    "    with dot.subgraph(name='cluster_clean') as c:\n",
    "        c.attr(label='数据清洗', style='dashed,rounded', color='#003366', fontsize='12')\n",
    "        c.node('MD', '异常值检测\\n马氏距离(MD)')\n",
    "        c.node('PCA1', '离群点检测\\n主成分分析(PCA)')\n",
    "        c.node('CleanData', '清洗后数据', shape='folder')\n",
    "    \n",
    "    # 数据降噪模块（论文3.3节）\n",
    "    with dot.subgraph(name='cluster_denoise') as d:\n",
    "        d.attr(label='数据降噪', style='dashed,rounded', color='#663300', fontsize='12')\n",
    "        d.node('Baseline', '基线校正\\n趋势校正+位移校正')\n",
    "        d.node('SG', 'S-G滤波\\n多项式阶=2')\n",
    "        d.node('SNV', 'SNV变换\\n均值中心化+标准差缩放')\n",
    "        d.node('DenoiseData', '降噪后数据', shape='folder')\n",
    "    \n",
    "    # 数据降维模块（论文3.4节）\n",
    "    with dot.subgraph(name='cluster_reduce') as r:\n",
    "        r.attr(label='数据降维', style='dashed,rounded', color='#660066', fontsize='12')\n",
    "        r.node('PCA2', '主成分分析(PCA)')\n",
    "        r.node('FinalData', '预处理完成数据', shape='cylinder', color='#006600')\n",
    "\n",
    "    # ============== 严格按论文流程连接 ==============\n",
    "    # 数据清洗流程\n",
    "    dot.edge('RawData', 'MD')\n",
    "    dot.edge('RawData', 'PCA1')\n",
    "    dot.edge('MD', 'CleanData')\n",
    "    dot.edge('PCA1', 'CleanData')\n",
    "    \n",
    "    # 数据降噪流程\n",
    "    dot.edge('CleanData', '数据降噪')\n",
    "    dot.edge('Baseline', 'SG')\n",
    "    dot.edge('SG', 'SNV')\n",
    "    dot.edge('SNV', 'DenoiseData')\n",
    "    \n",
    "    # 数据降维流程\n",
    "    dot.edge('DenoiseData', '数据降维')\n",
    "    dot.edge('PCA2', 'FinalData')\n",
    "\n",
    "    # ============== 布局优化 ==============\n",
    "    # 强制同级节点对齐（通过不可见边）\n",
    "    with dot.subgraph() as align:\n",
    "        align.attr(rank='same')\n",
    "        align.node('dummy1', style='invis')\n",
    "        align.node('dummy2', style='invis')\n",
    "        dot.edge('dummy1', 'MD', style='invis')\n",
    "        dot.edge('PCA1', 'dummy2', style='invis')\n",
    "        dot.edge('dummy1', 'Baseline', style='invis')\n",
    "        dot.edge('SG', 'dummy2', style='invis')\n",
    "        dot.edge('dummy1', 'SNV', style='invis')\n",
    "        dot.edge('PCA2', 'dummy2', style='invis')\n",
    "\n",
    "    # 输出图像（300dpi高清）\n",
    "    dot.attr(dpi='300')\n",
    "    dot.render('data_preprocessing_flow_final', \n",
    "               view=True, cleanup=True, format='png')\n",
    "\n",
    "draw_preprocessing_flow()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "b48a7c5e-ebc1-4f0d-a7cf-5eb00e59c174",
   "metadata": {},
   "outputs": [],
   "source": [
    "from graphviz import Digraph\n",
    "import matplotlib.font_manager as fm\n",
    "\n",
    "def draw_preprocessing_flow():\n",
    "    # 设置中文字体\n",
    "    font_path = fm.findfont(fm.FontProperties(family='SimSun'))\n",
    "    \n",
    "    dot = Digraph(\n",
    "        name=\"Data_Preprocessing_Flow\",\n",
    "        format='png',\n",
    "        engine='dot',\n",
    "        graph_attr={\n",
    "            'rankdir': 'TB',\n",
    "            'bgcolor': 'white',\n",
    "            'fontname': 'SimSun',\n",
    "            'splines': 'ortho'\n",
    "        },\n",
    "        node_attr={\n",
    "            'fontname': 'SimSun',\n",
    "            'fontsize': '11',\n",
    "            'shape': 'box',\n",
    "            'style': 'rounded',\n",
    "            'color': '#333333'\n",
    "        }\n",
    "    )\n",
    "\n",
    "    # ============== 节点定义 ==============\n",
    "    dot.node('RawData', '原始数据\\n403条近红外光谱', shape='cylinder', color='#666666')\n",
    "    \n",
    "    # 数据清洗模块（虚线框）\n",
    "    with dot.subgraph(name='cluster_clean') as c:\n",
    "        c.attr(label='数据清洗', style='dashed,rounded', color='#003366', fontsize='12')\n",
    "        c.node('MD', '异常值检测\\n马氏距离(MD)')\n",
    "        c.node('PCA1', '离群点检测\\n主成分分析(PCA)')\n",
    "        c.node('CleanData', '清洗后数据', shape='folder')\n",
    "        # 添加不可见连接点\n",
    "        c.node('clean_port', label='', shape='point', width='0', style='invis')\n",
    "    \n",
    "    # 数据降噪模块（虚线框）\n",
    "    with dot.subgraph(name='cluster_denoise') as d:\n",
    "        d.attr(label='数据降噪', style='dashed,rounded', color='#663300', fontsize='12')\n",
    "         # 添加不可见连接点\n",
    "        d.node('denoise_port', label='', shape='point', width='0', style='invis')\n",
    "        d.node('Baseline', '基线校正\\n趋势校正+位移校正')\n",
    "        d.node('SG', 'S-G滤波\\n多项式阶=2')\n",
    "        d.node('SNV', 'SNV变换\\n均值中心化+标准差缩放')\n",
    "        d.node('DenoiseData', '降噪后数据', shape='folder')\n",
    "    \n",
    "    # 数据降维模块（虚线框）\n",
    "    with dot.subgraph(name='cluster_reduce') as r:\n",
    "        r.attr(label='数据降维', style='dashed,rounded', color='#660066', fontsize='12')\n",
    "        # 添加不可见连接点\n",
    "        r.node('reduce_port', label='', shape='point', width='0', style='invis')\n",
    "        r.node('PCA2', '主成分分析(PCA)')\n",
    "        r.node('FinalData', '标准化数据集', shape='cylinder', color='#006600')\n",
    "\n",
    "    # ============== 连接逻辑 ==============\n",
    "    # 数据清洗流程\n",
    "    dot.edge('RawData', 'MD')\n",
    "    dot.edge('RawData', 'PCA1')\n",
    "    dot.edge('MD', 'CleanData')\n",
    "    dot.edge('PCA1', 'CleanData')\n",
    "    \n",
    "    # 数据降噪流程（修改点：指向虚线框边缘）\n",
    "    dot.edge('CleanData', 'denoise_port', lhead='cluster_denoise')\n",
    "    \n",
    "    # 内部降噪流程\n",
    "    dot.edge('Baseline', 'SG')\n",
    "    dot.edge('SG', 'SNV')\n",
    "    dot.edge('SNV', 'DenoiseData')\n",
    "    \n",
    "    # 数据降维流程（修改点：指向虚线框边缘）\n",
    "    dot.edge('DenoiseData', 'reduce_port', lhead='cluster_reduce')\n",
    "    dot.edge('PCA2', 'FinalData')\n",
    "\n",
    "    # ============== 布局优化 ==============\n",
    "    with dot.subgraph() as align:\n",
    "        align.attr(rank='same')\n",
    "        align.node('dummy1', style='invis')\n",
    "        align.node('dummy2', style='invis')\n",
    "        dot.edge('dummy1', 'MD', style='invis')\n",
    "        dot.edge('PCA1', 'dummy2', style='invis')\n",
    "        dot.edge('dummy1', 'Baseline', style='invis')\n",
    "        dot.edge('SG', 'dummy2', style='invis')\n",
    "        dot.edge('dummy1', 'SNV', style='invis')\n",
    "        dot.edge('PCA2', 'dummy2', style='invis')\n",
    "\n",
    "    # 输出图像\n",
    "    dot.attr(dpi='300')\n",
    "    dot.render('data_preprocessing_flow_final', view=True, cleanup=True)\n",
    "\n",
    "draw_preprocessing_flow()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "0a240f92-a0b2-466c-a6fd-742e33267346",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda3\\Lib\\site-packages\\keras\\src\\layers\\rnn\\rnn.py:200: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n",
      "  super().__init__(**kwargs)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "最佳epochs轮数: 481\n",
      "\u001b[1m3/3\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 455ms/step\n",
      "\u001b[1m11/11\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 7ms/step \n",
      "RMSEc (校正均方根误差): 3.7416399637392175\n",
      "RMSEp (预测均方根误差): 4.962539906779484\n",
      "Rcal (校正集相关系数): 0.9971641206544075\n",
      "Rval (验证集相关系数): 0.9930484145198182\n",
      "RPD (相对预测偏差): 8.493172925867654\n",
      "Training time: 361.8556373119354 seconds\n",
      "Testing time: 2.3028759956359863 seconds\n"
     ]
    }
   ],
   "source": [
    "import time\n",
    "import pandas as pd\n",
    "from sklearn.decomposition import PCA\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import mean_squared_error\n",
    "from scipy.stats import pearsonr\n",
    "import numpy as np\n",
    "from tensorflow.keras.models import Sequential\n",
    "from tensorflow.keras.optimizers import Adam\n",
    "from tensorflow.keras.callbacks import EarlyStopping\n",
    "from tensorflow.keras.layers import Dense, Conv1D, LSTM, MaxPooling1D  # 导入 MaxPooling1D\n",
    "from tensorflow.keras.layers import LSTM, Flatten  # 导入 Flatten 和 LSTM\n",
    "\n",
    "# 读取数据\n",
    "file_path = 'F:\\\\研究\\\\番泻苷在线提取数据.xlsx'\n",
    "with pd.ExcelFile(file_path) as xls:\n",
    "    ir_data = pd.read_excel(xls, '红外谱图', index_col='编号\\波数')\n",
    "    targets = pd.read_excel(xls, '番泻苷含量')[['番泻苷A']]\n",
    "\n",
    "# 特征提取\n",
    "def extract_features(data):\n",
    "    pca = PCA(n_components=10)\n",
    "    pca_features = pca.fit_transform(data)\n",
    "    return pd.DataFrame(pca_features, columns=['PC' + str(i) for i in range(1, 11)])\n",
    "\n",
    "pca_features_df = extract_features(ir_data)\n",
    "\n",
    "# 索引对齐\n",
    "pca_features_df, targets = pca_features_df.align(targets, join='inner', axis=0)\n",
    "\n",
    "# Kennard-Stone算法实现省略，假设函数名为kennard_stone_selection\n",
    "def kennard_stone_selection(x_variables, k):\n",
    "    x_variables = np.array(x_variables)\n",
    "    original_x = x_variables\n",
    "    distance_to_average = ((x_variables - np.tile(x_variables.mean(axis=0), (x_variables.shape[0], 1))) ** 2).sum(\n",
    "        axis=1)\n",
    "    max_distance_sample_number = np.where(distance_to_average == np.max(distance_to_average))\n",
    "    max_distance_sample_number = max_distance_sample_number[0][0]\n",
    "    selected_sample_numbers = list()\n",
    "    selected_sample_numbers.append(max_distance_sample_number)\n",
    "    remaining_sample_numbers = np.arange(0, x_variables.shape[0], 1)\n",
    "    x_variables = np.delete(x_variables, selected_sample_numbers, 0)\n",
    "    remaining_sample_numbers = np.delete(remaining_sample_numbers, selected_sample_numbers, 0)\n",
    "    for iteration in range(1, k):\n",
    "        selected_samples = original_x[selected_sample_numbers, :]\n",
    "        min_distance_to_selected_samples = list()\n",
    "        for min_distance_calculation_number in range(0, x_variables.shape[0]):\n",
    "            distance_to_selected_samples = ((selected_samples - np.tile(x_variables[min_distance_calculation_number, :],\n",
    "                                                                        (selected_samples.shape[0], 1))) ** 2).sum(\n",
    "                axis=1)\n",
    "            min_distance_to_selected_samples.append(np.min(distance_to_selected_samples))\n",
    "        max_distance_sample_number = np.where(\n",
    "            min_distance_to_selected_samples == np.max(min_distance_to_selected_samples))\n",
    "        max_distance_sample_number = max_distance_sample_number[0][0]\n",
    "        selected_sample_numbers.append(remaining_sample_numbers[max_distance_sample_number])\n",
    "        x_variables = np.delete(x_variables, max_distance_sample_number, 0)\n",
    "        remaining_sample_numbers = np.delete(remaining_sample_numbers, max_distance_sample_number, 0)\n",
    "\n",
    "    return selected_sample_numbers, remaining_sample_numbers\n",
    "\n",
    "\n",
    "# 划分数据集\n",
    "train_indices, test_indices = kennard_stone_selection(pca_features_df.values, 336)\n",
    "X_train, X_test = pca_features_df.iloc[train_indices], pca_features_df.iloc[test_indices]\n",
    "y_train, y_test = targets.iloc[train_indices], targets.iloc[test_indices]\n",
    "\n",
    "# 调整数据形状\n",
    "X_train = np.expand_dims(X_train, axis=2)\n",
    "X_test = np.expand_dims(X_test, axis=2)\n",
    "\n",
    "# 构建LSTM模型\n",
    "def LSTM_model(input_shape, output_shape):\n",
    "    model = Sequential()\n",
    "    model.add(LSTM(256, input_shape=(1, 10), return_sequences=True))  # 修正 input_shape\n",
    "    model.add(LSTM(256))\n",
    "    model.add(Dense(output_shape))\n",
    "    model.compile(optimizer=Adam(learning_rate=0.005), loss='mean_squared_error')\n",
    "    return model\n",
    "\n",
    "\n",
    "# 调整数据形状以匹配LSTM输入要求\n",
    "# LSTM需要三维输入，因此需要添加一个时间步长维度\n",
    "X_train = np.expand_dims(X_train, axis=1)  # 现在形状是(samples, 1, features)\n",
    "X_test = np.expand_dims(X_test, axis=1)    # 现在形状是(samples, 1, features)\n",
    "\n",
    "# 创建LSTM模型\n",
    "model_lstm = LSTM_model(X_train.shape[1:], 1)\n",
    "\n",
    "start_train_time = time.time()\n",
    "early_stopping = EarlyStopping(monitor='val_loss', patience=100)\n",
    "history = model_lstm.fit(X_train, y_train, epochs=1000, batch_size=10, validation_split=0.2, verbose=0, callbacks=[early_stopping])\n",
    "\n",
    "\n",
    "# 获取最佳epochs轮数\n",
    "best_epoch = early_stopping.stopped_epoch + 1  # +1 因为stopped_epoch是从0开始的\n",
    "print(f\"最佳epochs轮数: {best_epoch}\")\n",
    "\n",
    "end_train_time = time.time()\n",
    "train_time = end_train_time - start_train_time\n",
    "\n",
    "# 测试模型\n",
    "start_test_time = time.time()\n",
    "y_pred_lstm = model_lstm.predict(X_test)\n",
    "end_test_time = time.time()\n",
    "test_time = end_test_time - start_test_time\n",
    "\n",
    "# 计算性能指标\n",
    "def calculate_metrics(y_true, y_pred):\n",
    "    rmse = np.sqrt(mean_squared_error(y_true, y_pred))\n",
    "    r = pearsonr(y_true.ravel(), y_pred.ravel())[0]\n",
    "    return rmse, r\n",
    "\n",
    "rmsec, r_cal = calculate_metrics(y_train.values, model_lstm.predict(X_train))\n",
    "rmsep, r_val = calculate_metrics(y_test.values, y_pred_lstm)\n",
    "RPD = np.std(y_test.values) / rmsep\n",
    "\n",
    "# 输出性能指标\n",
    "print(f\"RMSEc (校正均方根误差): {rmsec}\\nRMSEp (预测均方根误差): {rmsep}\\nRcal (校正集相关系数): {r_cal}\\nRval (验证集相关系数): {r_val}\\nRPD (相对预测偏差): {RPD}\")\n",
    "print(f\"Training time: {train_time} seconds\")\n",
    "print(f\"Testing time: {test_time} seconds\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "c6e0db68-1f04-4502-adde-c23577f4c23e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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0qULli1bhhkzZqBPnz4AgJUrV2Lfvn1G6xEWFobvv/8eBw4cQKdOnQAANWvW1G3XDiOvWLGi3jPduYWHh2P37t04ceIEWrZsCQDYuHEjqlWrhh9//BF9+/YFoFlve+XKlahVqxYAYNy4cZg7d67J54yIiIiIiCwPO91PIykJuHev4P2qVTMs+/df016blFT4esm4desWsrKyEBgYqCvz8PDAM888o/v5woULEELohnJrZWZmwtPTE4DmTvunn36KrVu34t69e8jMzERmZiYcHR0LVZ/q1avrdfgDAwOhVqtx8+ZNXae7QYMGes9xnz9/Hn///TecnZ31jpWRkYFbt24hMTERMTExem20trZG06ZNjV6Bu3TpEqysrNCuXbtC1T+369evw9raWu+ig6enJ5555hlcv35dV6ZUKnUdbgCoUqUKHj58+MTvS0REREREpR873U/DxQWoWrXg/SpUkC8z5bUuLno/PulEaqYM+1Cr1bCyssL58+dhZWWlt83JyQmAZvj20qVLsWzZMjRo0ACOjo6YOHGibnj3k9Leuc49+2HejrxarUaTJk2wceNGg9dXkDvHJnBwcHii1+Vm7NwKIfTak/ezkySpyIbjKBQKVK5cGQoFnxihx5gLMobZIDnMBclhLsgYZsN07HQ/jacZ+p13uLkJJEkq1JJhudWuXRs2NjY4ffo0qlevDkAz+VdYWJjuLm+jRo2gUqnw8OFDtGnTRvY4v//+O3r27IlBgwYB0HSEw8PDUbdu3ULVJyoqCvfv39cNYz916hQUCoXBXfbcGjdujK1bt6JixYpwyXMxQqtKlSo4ffo02rZtCwDIycnB+fPn0bhxY9n9GzRoALVajaNHj+qGl+emvdOe37P09erVQ05ODs6cOaMbXh4XF4ewsLBCn5cnJUmS0eHvVH4xF2QMs0FymAuSw1yQMcyG6XhZwoIIIZCZmflEd0ednJwwfPhwvPvuu/jtt99w5coVBAcH612ZCggIwBtvvIHBgwdjx44duHPnDs6ePYuFCxfil19+AaDpvB84cAAnT57E9evXMWrUKDx48KDQ9bG3t8eQIUPw559/4vfff8c777yDoKAg3dByOW+88Qa8vLzQs2dP/P7777hz5w6OHj2KCRMmIDo6GgAwYcIEfPrpp9i5cydu3LiBMWPG6M2Knpefnx+GDBmCYcOG4ccff8Sd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zSvQtI8LtK6EvxsjGe8XsEI27LNVdG/evFmPPfaYKisrdf7556tjx4465ZRT9MILL6i8vLy1x4g/GIahyspKOgTCD9mAGXIBK2QjvORmJCsvM9nnWFzNTl0wa7Iue+ZOOat2604+enSrjKM5udjbfel77cSOsMX7BayQDftsFd0ZGRm66KKL9N5772nr1q169tln5XQ6dfnll6tTp0467rjjNH36dBUXF7f2eAEAAKJKWlKcxgzJ9xbenTet1W33jtWwBW81POiii6Rvv/UU3mHIzn3pANBWBbxPd2pqqs4991y98cYb2rp1q55//nmlp6fruuuuU5cuXXTkkUfqiSeeaI2xAgAARKXumSkaN6KPJlX+oHvuG6Nu61d4TiQnS7NmSTNmhPV2YHu7L31v5wEgmgVcdDeWnJysM888U3PnztXWrVv16quvqmvXrrr99ttbanxoxOl0Kjs7W05ns142RCGyATPkAlbIRnhKS4hR7mtzFFO523LyCy8Mys9vTi72dF+6nfMIX7xfwArZsM9htMIi/NraWsXFRVanyoqKCqWnp6u8vFxpaWmhHg4AAGiLNm2SBgyQjj9eevzxsL663VhFda2mfVygtSX+y8jzMpN99xoHgChht4YM+GPHf//735bnnE6n2rdvr4MOOkhdunQJ9KmxF263W2vWrFF+fj6fKMEH2YAZcgErZCOMlJZKHTo0fN2li7R0qef/BllzclF/X/qsRWt8Cu+8zGSNGZJPwR3BeL+AFbJhX8BF95gxY7wboDe+SN74mNPp1Pnnn69nn31WsbEsJ2ophmGopqaGDoHwQzZghlzACtkIA9XV0rXXSvPmSd9/L2VkNJwL0YWL5uai/r509umOLrxfwArZsC/givjbb7/VWWedpZEjR+qcc85R586dVVRUpJdeeknz5s3Tk08+qSVLlujuu+9Wfn6+7rrrrtYYNwAAQGRatkw680zpxx89X190kfTmm9IfFzAiWVpSnPolpYd6GAAQVgIuuh999FGdeuqp+sc//uE9tu+++2rYsGG6/vrrNWPGDL388ssqKyvTnDlzKLoBAADqvfSSdNll0o4dnq+TkqRTTmnVgruiuparzwAQQgEX3e+9955effVV03PHHXeczjjjDEnSkUceqX/+85/NGx18OJ1O5ebmcs8E/JANmCEXsEI2AtMiRWt1tTRunPTM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qkePHqwmgB+yATPkohnWrZPOOkvasEFaulTq0KHhXBQU3GQDZsgFzJALWCEb9tkqukeOHKl27drJMAzddNNNuuaaa9S9e3efxyQkJGj//ffXsGHDWmWg8IiNDXhrdbQRZANmyEUTvPeedMEFDc3SLr1Uev310I6pFZANmCEXMEMuYIVs2GPrtzR48GANHjxYklRZWalLL71UOTk5rTow+HO73Vq+fLl69+6tmJiYUA8HYYRswAy5CFBtrXTrrdI//tFwLD9fmjAhZENqLWQDZsgFzJALWCEb9gX80cRdd93VGuMAACB01q2Tzj5b+u9/G46deqo0YwbN0gAAQLMEvAB//PjxOvfcc03PnXfeebrxxhubPSgAAILmvfekAQMaCu64OGnaNM+ScgpuAADQTAEX3e+8845Gjhxpem7kyJF6++23mz0oAACC4o47pBNPbLh/Oz9f+uor6dprJYcjpEMDAADRIeCie8OGDcrPzzc9l5eXp8LCwuaOCRacTqd69+5Nh0D4IRswQy5saNwU9NRTpe+/lw4+OHTjCRKyATPkAmbIBayQDfsCvqc7JSVF69evNz23bt06JUbBVirhrK6uTvHx8aEeBsIQ2YAZcrEXl1wiLVrkWV7+f//Xpq5ukw2YIRcwQy5ghWzYE/DHEoMHD9ZDDz2k2tpan+O1tbV65JFHNGTIkBYbHHy53W6tXr1abrc71ENBmCEbMEMudlNb67l/uzGHw9MsrY0tJycbMEMuYIZcwArZsC/gK9233367hg4dqv79++viiy9W165dVVhYqBkzZmjt2rV66qmnWmOcAAA03fr10llnSf/9r9bNmKNNw45RamKscjOSlZYUF+rRAQCAKBZw0X3ooYfqnXfe0VVXXaUJjfYu7dWrl9555x0dcsghLTpAAACa5b33pAsvlEpLJUnp467R5AffUm18ovIykzVmSL66Z6aEeJAAACBaBVx0S9IxxxyjFStWaPny5dq6das6duyo3r17t/TYYIJGBbBCNmCmTeeitla67TbpwQe9h4ozu+ipKyerNt7Tf2RtSZVmLVqjcSP6tLkr3m06G7BELmCGXMAK2bDHYRiGEepBhIOKigqlp6ervLxcaWlpoR4OAKA5Gi0nr/f9wKGacfGdqkrxf4+/fmQf9ctJD+YIAQBAhLNbQ9q60r1w4UIdeOCBateunRYuXLjX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WrRoUYhGhVArLy+XJHXo0EGStHr1ahUVFfnkJCEhQcOGDSMnbcBVV12lE044QSNGjPA5Ti7arnfeeUeDBg3SqFGj1KlTJw0cOFDPPvus9zzZaJsOP/xwffLJJyooKJAk/fDDD/ryyy91/PHHSyIX8LCTgyVLlqi2ttbnMTk5Oerfvz9ZaUPKy8vlcDi8q6jIhbnYUA8Ae1dcXCyXy6XOnTv7HO/cubOKiopCNCqEkmEYGj9+vA4//HD1799fkrxZMMvJ2rVrgz5GBM/cuXP13XffafHixX7nyEXbtWrVKj355JMaP368br31Vn377bf6v//7PyUkJOiCCy4gG23UzTffrPLycvXt21cxMTFyuVy67777dM4550jiPQMednJQVFSk+Ph4ZWRk+D2Gv0/bhp07d2rChAkaPXq00tLSJJELKxTdEcThcPh8bRiG3zG0DVdffbV+/PFHffnll37nyEnbsn79el177bWaN2+eEhMTLR9HLtoet9utQYMGafLkyZKkgQMH6pdfftGTTz6pCy64wPs4stG2vPzyy3rhhRf04osv6k9/+pOWLl2qcePGKScnRxdeeKH3ceQCUtNyQFbahtraWp199tlyu9164okn9vr4tp4LlpdHgKysLMXExPh9OrRlyxa/TyAR/a655hq98847+uyzz5Sbm+s9np2dLUnkpI1ZsmSJtmzZooMOOkixsbGKjY3VggUL9Nhjjyk2Ntb72pOLtqdLly7q16+fz7H99tvP24CT94y26cYbb9SECRN09tlna//999f555+v6667TlOmTJFELuBhJwfZ2dmqqalRWVmZ5WMQnWpra3XmmWdq9erVmj9/vvcqt0QurFB0R4D4+HgddNBBmj9/vs/x+fPna8iQISEaFYLNMAxdffXVeuONN/Tpp5+qR48ePud79Oih7Oxsn5zU1NRowYIF5CSKHXXUUfrpp5+0dOlS73+DBg3Sueeeq6VLl6pnz57koo067LDD/LYVLCgoUF5eniTeM9qqqqoqOZ2+f/7FxMR4twwjF5Ds5eCggw5SXFycz2M2bdqkn3/+maxEsfqCe/ny5fr444+VmZnpc55cmGN5eYQYP368zj//fA0aNEiDBw/WM888o3Xr1umKK64I9dAQJFdddZVefPFFvf3220pNTfV++pyenq6kpCTv3syTJ09W79691bt3b02ePFnJyckaPXp0iEeP1pKamuq9r79eSkqKMjMzvcfJRdt03XXXaciQIZo8ebLOPPNMffvtt3rmmWf0zDPPSBLvGW3UiSeeqPvuu0/du3fXn/70J33//fd6+OGHNXbsWEnkoi3ZsWOHVqxY4f169erVWrp0qTp06KDu3bvvNQfp6em6+OKLdf311yszM1MdOnTQDTfcoP3339+vqScix55ykZOTozPOOEPfffed3nvvPblcLu/fox06dFB8fDy5sBKqtukI3L/+9S8jLy/PiI+PNw488EDvVlFoGySZ/jdz5kzvY9xut3HXXXcZ2dnZRkJCgjF06FDjp59+Ct2gERKNtwwzDHLRlr377rtG//79jYSEBKNv377GM88843OebLQ9FRUVxrXXXmt0797dSExMNHr27Gncdtttxq5du7yPIRdtw2effWb6d8WFF15oGIa9HFRXVxtXX3210aFDByMpKcn429/+Zqxbty4Es0FL2VMuVq9ebfn36GeffeZ9DnLhz2EYhhHMIh8AAAAAgLaCe7oBAAAAAGglFN0AAAAAALQSim4AAAAAAFoJRTcAAAAAAK2EohsAAAAAgFZC0Q0AAAAAQCuh6AYAAAAAoJVQdAMAAAAA0EoougEAUeGxxx6Tw+FQ//79m/wcGzdu1MSJE7V06dKWG9geDB8+XMOHD7c8v3XrVsXHx+vss8+2fExFRYWSk5N10kkn2f65s2bNksPh0Jo1awIYbXBt27ZNWVlZmjt3blB+XmlpqeLi4vTmm2+2yPONGTNG7dq12+Njpk+frq5du6qysrJFfiYAIDxRdAMAosKMGTMkSb/88ou++eabJj3Hxo0bNWnSpKAV3XvTsWNHnXTSSXrrrbdUVlZm+pi5c+equrpaF198cZBH17omTZqknJwcnXXWWUH5eW+//bbi4+N17LHHBuXnSdKFF16olJQUTZ06NWg/EwAQfBTdAICI97///U8//PCDTjjhBEmeK4jR4uKLL9auXbs0Z84c0/MzZsxQ586dvXOPBqWlpXr66ad11VVXyeFwBOVnvvbaazr++OOVlJQUlJ8nSbGxsbr88sv16KOPqqqqKmg/FwAQXBTdAICIV19k33///RoyZIjmzp1rWsRs2LBBl112mbp166b4+Hjl5OTojDPO0ObNm/X555/r4IMPliRddNFFcjgccjgcmjhxoiTrpeBjxoxRfn6+z7FJkybp0EMPVYcOHZSWlqYDDzxQ06dPl2EYAc/tmGOOUW5urmbOnOl37rffftM333yjCy64QLGxsZo/f75OPvlk5ebmKjExUfvss48uv/xyFRcX7/Xn5Ofna8yYMX7HzeZdUVGhG264QT169FB8fLy6du2qcePG+S2TfvXVV3XooYcqPT1dycnJ6tmzp8aOHbvXscyaNUt1dXV+V7kDeQ0KCwt1xhlnKDU1Ve3bt9e5556rxYsXy+FwaNasWX7z+fjjj3X66ad7jzkcDl199dWaOXOm9t13XyUlJWnQoEH6+uuvZRiGHnzwQfXo0UPt2rXTkUceqRUrVux1XmbOPfdcVVRUBG0ZPQAg+GJDPQAAAJqjurpaL730kg4++GD1799fY8eO1SWXXKJXX31VF154ofdxGzZs0MEHH6za2lrdeuutOuCAA1RSUqKPPvpIZWVlOvDAAzVz5kxddNFFuv32271XjnNzcwMe05o1a3T55Zere/fukqSvv/5a11xzjTZs2KA777wzoOdyOp0aM2aM7r33Xv3www/685//7D1XX4jXF7IrV67U4MGDdckllyg9PV1r1qzRww8/rMMPP1w//fST4uLiAp7L7qqqqjRs2DAVFhZ6f4+//PKL7rzzTv3000/6+OOP5XA49N///ldnnXWWzjrrLE2cOFGJiYlau3atPv30073+jPfff18DBw5U+/btmzTGyspKHXHEESotLdUDDzygffbZRx9++KHlUvV3331XDofDb7XAe++9p++//17333+/HA6Hbr75Zp1wwgm68MILtWrVKj3++OMqLy/X+PHjdfrpp2vp0qUBX5nPzs5W37599f7779v6QAIAEHkougEAEe21115TeXm5957ms846S+PGjdP06dN9iu4777xTxcXF+uGHH7Tffvt5j5955pnef9c3YevVq5f+8pe/NHlMja9Ku91uDR8+XIZh6NFHH9Udd9wRcGE2duxY3XfffZoxY4YeffRRSVJdXZ2ef/55HXbYYerbt68k6YorrvB+j2EYGjJkiIYPH668vDx98MEHATVbs/LYY4/pxx9/1DfffKNBgwZJko466ih17dpVZ5xxhj788EMdd9xxWrRokQzD0FNPPaX09HTv95tdTd/d119/rQsuuKDJY5w9e7ZWrFihDz74wHuP9siRI1VVVaWnn37a7/Gvvfaa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",
      "text/plain": [
       "<Figure size 1000x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "# 创建预测值与真实值对比的散点图\n",
    "plt.figure(figsize=(10, 8))\n",
    "\n",
    "# 绘制散点图\n",
    "sns.scatterplot(x=y_test.values.ravel(), y=y_pred_lstm.ravel(), alpha=0.7)\n",
    "\n",
    "# 添加y=x参考线（理想预测线）\n",
    "plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], \n",
    "         'r--', lw=2, label='Ideal prediction')\n",
    "\n",
    "# 添加主要刻度线\n",
    "plt.grid(True, linestyle='--', alpha=0.5)\n",
    "\n",
    "# 添加性能指标文本框\n",
    "metrics_text = f'RMSEP: {rmsep:.4f}\\nRval: {r_val:.4f}\\nRPD: {RPD:.4f}'\n",
    "props = dict(boxstyle='round', facecolor='white', alpha=0.8)\n",
    "plt.gca().text(0.05, 0.95, metrics_text, transform=plt.gca().transAxes,\n",
    "               fontsize=12, verticalalignment='top', bbox=props)\n",
    "\n",
    "# 设置坐标轴标签和标题\n",
    "plt.xlabel('Actual Values (μg/mL)', fontsize=12)\n",
    "plt.ylabel('Predicted Values (μg/mL)', fontsize=12)\n",
    "plt.title('Cassia Glycoside A Prediction vs Actual Values', fontsize=14)\n",
    "plt.legend(fontsize=10)\n",
    "\n",
    "# 调整布局并显示/保存图表\n",
    "plt.tight_layout()\n",
    "# 保存为高清图片（可选）\n",
    "plt.savefig('prediction_vs_actual.png', dpi=300, bbox_inches='tight')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "07b4c529-fd96-4e23-aa62-04bc0a74e278",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda3\\Lib\\site-packages\\keras\\src\\layers\\rnn\\rnn.py:200: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n",
      "  super().__init__(**kwargs)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m3/3\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 347ms/step\n",
      "\u001b[1m11/11\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 7ms/step \n",
      "RMSEc (校正均方根误差): 3.8473306331865094\n",
      "RMSEp (预测均方根误差): 7.7750103326110604\n",
      "Rcal (校正集相关系数): 0.9983307436716777\n",
      "Rval (验证集相关系数): 0.9952725081899756\n",
      "RPD (相对预测偏差): 9.48488008612964\n"
     ]
    }
   ],
   "source": [
    "import time\n",
    "import pandas as pd\n",
    "from sklearn.decomposition import PCA\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import mean_squared_error\n",
    "from scipy.stats import pearsonr\n",
    "import numpy as np\n",
    "from tensorflow.keras.models import Sequential\n",
    "from tensorflow.keras.optimizers import Adam\n",
    "from tensorflow.keras.callbacks import EarlyStopping\n",
    "from tensorflow.keras.layers import Dense, Conv1D, LSTM, MaxPooling1D  # 导入 MaxPooling1D\n",
    "from tensorflow.keras.layers import LSTM, Flatten  # 导入 Flatten 和 LSTM\n",
    "\n",
    "# 读取数据\n",
    "file_path = 'F:\\\\研究\\\\番泻苷在线提取数据.xlsx'\n",
    "with pd.ExcelFile(file_path) as xls:\n",
    "    ir_data = pd.read_excel(xls, '红外谱图', index_col='编号\\波数')\n",
    "    targets = pd.read_excel(xls, '番泻苷含量')[['番泻苷B']]\n",
    "\n",
    "# 特征提取\n",
    "def extract_features(data):\n",
    "    pca = PCA(n_components=10)\n",
    "    pca_features = pca.fit_transform(data)\n",
    "    return pd.DataFrame(pca_features, columns=['PC' + str(i) for i in range(1, 11)])\n",
    "\n",
    "pca_features_df = extract_features(ir_data)\n",
    "\n",
    "# 索引对齐\n",
    "pca_features_df, targets = pca_features_df.align(targets, join='inner', axis=0)\n",
    "\n",
    "# Kennard-Stone算法实现省略，假设函数名为kennard_stone_selection\n",
    "def kennard_stone_selection(x_variables, k):\n",
    "    x_variables = np.array(x_variables)\n",
    "    original_x = x_variables\n",
    "    distance_to_average = ((x_variables - np.tile(x_variables.mean(axis=0), (x_variables.shape[0], 1))) ** 2).sum(\n",
    "        axis=1)\n",
    "    max_distance_sample_number = np.where(distance_to_average == np.max(distance_to_average))\n",
    "    max_distance_sample_number = max_distance_sample_number[0][0]\n",
    "    selected_sample_numbers = list()\n",
    "    selected_sample_numbers.append(max_distance_sample_number)\n",
    "    remaining_sample_numbers = np.arange(0, x_variables.shape[0], 1)\n",
    "    x_variables = np.delete(x_variables, selected_sample_numbers, 0)\n",
    "    remaining_sample_numbers = np.delete(remaining_sample_numbers, selected_sample_numbers, 0)\n",
    "    for iteration in range(1, k):\n",
    "        selected_samples = original_x[selected_sample_numbers, :]\n",
    "        min_distance_to_selected_samples = list()\n",
    "        for min_distance_calculation_number in range(0, x_variables.shape[0]):\n",
    "            distance_to_selected_samples = ((selected_samples - np.tile(x_variables[min_distance_calculation_number, :],\n",
    "                                                                        (selected_samples.shape[0], 1))) ** 2).sum(\n",
    "                axis=1)\n",
    "            min_distance_to_selected_samples.append(np.min(distance_to_selected_samples))\n",
    "        max_distance_sample_number = np.where(\n",
    "            min_distance_to_selected_samples == np.max(min_distance_to_selected_samples))\n",
    "        max_distance_sample_number = max_distance_sample_number[0][0]\n",
    "        selected_sample_numbers.append(remaining_sample_numbers[max_distance_sample_number])\n",
    "        x_variables = np.delete(x_variables, max_distance_sample_number, 0)\n",
    "        remaining_sample_numbers = np.delete(remaining_sample_numbers, max_distance_sample_number, 0)\n",
    "\n",
    "    return selected_sample_numbers, remaining_sample_numbers\n",
    "\n",
    "\n",
    "# 划分数据集\n",
    "train_indices, test_indices = kennard_stone_selection(pca_features_df.values, 336)\n",
    "X_train, X_test = pca_features_df.iloc[train_indices], pca_features_df.iloc[test_indices]\n",
    "y_train, y_test = targets.iloc[train_indices], targets.iloc[test_indices]\n",
    "\n",
    "# 调整数据形状\n",
    "X_train = np.expand_dims(X_train, axis=2)\n",
    "X_test = np.expand_dims(X_test, axis=2)\n",
    "\n",
    "# 构建LSTM模型\n",
    "def LSTM_model(input_shape, output_shape):\n",
    "    model = Sequential()\n",
    "    model.add(LSTM(128, input_shape=(1, 10), return_sequences=True))  # 修正 input_shape\n",
    "    model.add(LSTM(128))\n",
    "    model.add(Dense(output_shape))\n",
    "    model.compile(optimizer=Adam(learning_rate=1e-3), loss='mean_squared_error')\n",
    "    return model\n",
    "\n",
    "\n",
    "# 调整数据形状以匹配LSTM输入要求\n",
    "# LSTM需要三维输入，因此需要添加一个时间步长维度\n",
    "X_train = np.expand_dims(X_train, axis=1)  # 现在形状是(samples, 1, features)\n",
    "X_test = np.expand_dims(X_test, axis=1)    # 现在形状是(samples, 1, features)\n",
    "\n",
    "# 创建LSTM模型\n",
    "model_lstm = LSTM_model(X_train.shape[1:], 1)\n",
    "\n",
    "\n",
    "early_stopping = EarlyStopping(monitor='val_loss', patience=100)\n",
    "history = model_lstm.fit(X_train, y_train, epochs=1000, batch_size=10, validation_split=0.2, verbose=0, callbacks=[early_stopping])\n",
    "\n",
    "\n",
    "\n",
    "# 测试模型\n",
    "start_test_time = time.time()\n",
    "y_pred_lstm = model_lstm.predict(X_test)\n",
    "end_test_time = time.time()\n",
    "test_time = end_test_time - start_test_time\n",
    "\n",
    "# 计算性能指标\n",
    "def calculate_metrics(y_true, y_pred):\n",
    "    rmse = np.sqrt(mean_squared_error(y_true, y_pred))\n",
    "    r = pearsonr(y_true.ravel(), y_pred.ravel())[0]\n",
    "    return rmse, r\n",
    "\n",
    "rmsec, r_cal = calculate_metrics(y_train.values, model_lstm.predict(X_train))\n",
    "rmsep, r_val = calculate_metrics(y_test.values, y_pred_lstm)\n",
    "RPD = np.std(y_test.values) / rmsep\n",
    "\n",
    "# 输出性能指标\n",
    "print(f\"RMSEc (校正均方根误差): {rmsec}\\nRMSEp (预测均方根误差): {rmsep}\\nRcal (校正集相关系数): {r_cal}\\nRval (验证集相关系数): {r_val}\\nRPD (相对预测偏差): {RPD}\")\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "4b0c8c31-d907-437e-af49-7bddcfbd745a",
   "metadata": {},
   "outputs": [
    {
     "ename": "TypeError",
     "evalue": "Axes.text() missing 1 required positional argument: 's'",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "Cell \u001b[1;32mIn[7], line 19\u001b[0m\n\u001b[0;32m     17\u001b[0m \u001b[38;5;66;03m# 添加性能指标文本框\u001b[39;00m\n\u001b[0;32m     18\u001b[0m props \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mdict\u001b[39m(boxstyle\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mround\u001b[39m\u001b[38;5;124m'\u001b[39m, facecolor\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mwhite\u001b[39m\u001b[38;5;124m'\u001b[39m, alpha\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0.8\u001b[39m)\n\u001b[1;32m---> 19\u001b[0m plt\u001b[38;5;241m.\u001b[39mgca()\u001b[38;5;241m.\u001b[39mtext(\u001b[38;5;241m0.05\u001b[39m, \u001b[38;5;241m0.95\u001b[39m,transform\u001b[38;5;241m=\u001b[39mplt\u001b[38;5;241m.\u001b[39mgca()\u001b[38;5;241m.\u001b[39mtransAxes,\n\u001b[0;32m     20\u001b[0m                fontsize\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m12\u001b[39m, verticalalignment\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtop\u001b[39m\u001b[38;5;124m'\u001b[39m, bbox\u001b[38;5;241m=\u001b[39mprops)\n\u001b[0;32m     22\u001b[0m \u001b[38;5;66;03m# 设置坐标轴标签和标题\u001b[39;00m\n\u001b[0;32m     23\u001b[0m plt\u001b[38;5;241m.\u001b[39mxlabel(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mActual Values (μg/mL)\u001b[39m\u001b[38;5;124m'\u001b[39m, fontsize\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m12\u001b[39m)\n",
      "\u001b[1;31mTypeError\u001b[0m: Axes.text() missing 1 required positional argument: 's'"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1000x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "# 创建预测值与真实值对比的散点图\n",
    "plt.figure(figsize=(10, 8))\n",
    "\n",
    "# 绘制散点图\n",
    "sns.scatterplot(x=y_test.values.ravel(), y=y_pred_lstm.ravel(), alpha=0.7)\n",
    "\n",
    "# 添加y=x参考线（理想预测线）\n",
    "plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], \n",
    "         'r--', lw=2, label='Ideal prediction')\n",
    "\n",
    "# 添加主要刻度线\n",
    "plt.grid(True, linestyle='--', alpha=0.5)\n",
    "\n",
    "# 添加性能指标文本框\n",
    "metrics_text = f'RMSEP: {rmsep:.4f}\\nRval: {r_val:.4f}\\nRPD: {RPD:.4f}'\n",
    "props = dict(boxstyle='round', facecolor='white', alpha=0.8)\n",
    "plt.gca().text(0.05, 0.95, metrics_text, transform=plt.gca().transAxes,\n",
    "               fontsize=12, verticalalignment='top', bbox=props)\n",
    "\n",
    "# 设置坐标轴标签和标题\n",
    "plt.xlabel('Actual Values (μg/mL)', fontsize=12)\n",
    "plt.ylabel('Predicted Values (μg/mL)', fontsize=12)\n",
    "plt.title('Cassia Glycoside B Prediction vs Actual Values', fontsize=14)\n",
    "plt.legend(fontsize=10)\n",
    "\n",
    "# 调整布局并显示/保存图表\n",
    "plt.tight_layout()\n",
    "# 保存为高清图片（可选）\n",
    "plt.savefig('番泻苷B预测值与真实值散点图.png', dpi=300, bbox_inches='tight')\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
